package com.yww.leetcode.binarytree;

import com.yww.leetcode.common.TreeNode;

/**
 * @author yww
 * @description 101. 对称二叉树
 * @since 2024/2/8 17:13
 */
public class IsSymmetric101 {
    // 给你一个二叉树的根节点 root ， 检查它是否轴对称。
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return false;
        }
        return check(root.left, root.right);
    }

    private boolean check(TreeNode left, TreeNode right) {
        if (left == null && right == null) { // 如果树没有左右，即为对称
            return true;
        }
        if (left == null || right == null) { // 左右子树只有一个为null。则不对称
            return false;
        }
        if (left.val != right.val) { // 左子树的值不匹配右子树的值，不对称
            return false;
        }
        // 左节点的左子树和右节点的右子树进行对称递归比较，左节点的右子树和右节点的左子树进行对称递归比较
        return check(left.left, right.right) && check(left.right, right.left);
    }

}
